/**
 * 调用resolve(data)后
 * 会在then中得到resolve传递过来的data参数
 */

// function runAsync(){
//     var p = new Promise(function(resolve,reject){
//                 setTimeout(function(){
//                     console.log('执行任务')
//                     resolve('随便什么数据')
//                 },2000);
//             });
//     return p;        
// }

// runAsync().then(function(data){
//     console.log(data)
// })

/**
 * Promise的参数函数有2个参数,resolve和reject
 * 
 * 然后对应then中也接受2个回调.第一个是resolve.第二个是reject
 */
function getNumber(){
    var p = new Promise(function(resolve,reject){
        setTimeout(function(){
            var num = Math.ceil(Math.random()*10);
            if(num<=5){
                resolve(num);
            }else{
                reject('数字太大了');
            }
        },2000);
    });
    return p;
}

/**
 * 使用then接受2个参数
 */
// getNumber().then(
//     function(data){
//         console.log('resolved')
//         console.log(data)
//     },
//     function(reason,data){
//         console.log('rejected');
//         console.log(reason);
//         console.log(data)
//     }
// )

/**
 * 分别使用then和catch来接受resolve和reject
 * 不同之处是在于.当在执行then中的语句出现了错误.会直接跳转到catch中
 * 下面例子中的abc并没有定义.执行执行会报错.但是因为有catch的存在.程序不会终止
 */
getNumber().then(data=>{
    console.log('resolve')
    console.log(data)
    console.log(abc)
}).catch((reason,data)=>{
    console.log('reject')
    console.log(reason)

    //data一直是undefined
    console.log(data)
})





        